package cn.good.yan.basics.health;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.Status;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 1 服务监控 - 定制化管理 （定制 Health 信息）
 *      My1 - 就是 某个监控服务，例 db
 *      页面访问： http://localhost:9080/actuator/health
 *
 * @author shengren.yan
 * @create 2023-03-29
 */
@Component
public class My1HealthIndicator extends AbstractHealthIndicator {

    /**
     * 真实的检查方法 - 来检查该服务是否真的健康
     *
     * @param builder 构建器
     * @throws Exception 异常
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        Map<String, Object> map = new HashMap<>();
        // 查询某些模块，来判断条件 是否正常  (1==1)
        if (1==1) {
            // 代表健康
            builder.status(Status.UP);
            map.put("cont", 1);
            map.put("data", "成功");
            map.put("ms", 100);
        } else {
            // 代表不健康
            builder.status(Status.OUT_OF_SERVICE);
            map.put("err", "连接失败");
            map.put("ms", 5000);
        }
        // code 状态码  / map 封装信息
        builder.withDetail("code", 100).withDetails(map);
    }


}
